Я на Ubuntu Linux 10.04 У меня есть следующие
#simplec.c
#include "stdio.h"
int main()
{
printf("Hello World\n");
system("ps -H");
return 12;
}
И
#callsimplec.c
#include "stdio.h"
int main()
{
int ret =0;
ret = system("./simplec");
printf("In callsimplec ret is %d\n", ret);
}
Когда я делаю
gcc callsimplec.c -o callsimplec
gcc simplec.c -o simplec
./callsimplec
Я получаю:
Hello World
PID TTY TIME CMD
27238 pts/2 00:00:00 bash
28066 pts/2 00:00:00 callsimplec
28067 pts/2 00:00:00 simplec
28068 pts/2 00:00:00 ps
In callsimplec ret is 3072
Итак, я выяснил, что 3072 выводится на печать, потому что 256 умножить на 12 равно 3072. Какое бы возвращаемое значение я не использовал в simplec.c, я получаю это значение, умноженное на 256, в качестве выходных данных при печати.Это почему?Я просто пытаюсь понять это.