Что такое эквивалентный ассемблер Linux 64 для системного вызова C? - PullRequest
0 голосов
/ 03 мая 2020

(Вопрос отредактирован, спасибо @fuz)

Что такое эквивалентный ассемблер Linux 64 для системного вызова C?

Я хочу написать ассемблер, который по сути выполняет ту же функцию, что и вызов CLI в C, например system("ls -l").

Код, который я хочу воспроизвести, по существу выполняет ту же функцию, что и следующий C:

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   system("ls -l");

    exit(0);
}

1 Ответ

3 голосов
/ 03 мая 2020

Функция system lib c является , а не системным вызовом ядра. Вот почему его страница руководства имеет вид system(3), а не system(2).

Она реализована поверх fork (2) + execve (2) и системных вызовов waitpid(2). На самом деле это первое, что говорится на справочной странице system(3)! Go прочитайте его, так же, как вы должны прочитать справочную страницу Linux для любого фактического системного вызова или библиотечной функции, о которой вы хотите знать.

Используйте strace в вызывающей его программе или отдельную - войдите в него с помощью GDB или прочитайте исходный код glib c.

...