В bash, когда я набираю ls
и нажимаю enter, запускается двоичный файл ls
, и я снова вернусь к приглашению оболочки, ничего не сделав с моей стороны.Почему execl требует, чтобы я ударил «Enter» после запуска процесса?
Однако эта программа, написанная на C перекроют:
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main(void)
{
pid_t other = fork();
// other will be 0 for the child process
// other will be the childs process' value in the parent process.
switch(other) {
case 0:
printf("%s %i\n", "I am the child process!", other);
execl("/bin/ls","ls",NULL);
return 0;
default:
printf("%s %i\n", "I am the parent process!", other);
return 1;
}
}
Почему?
Выход следующим образом:
Korays-MacBook-Pro:~ koraytugay$ ./a.out
I am the parent process! 40309
I am the child process! 0
Korays-MacBook-Pro:~ koraytugay$ AndroidStudioProjects Movies happyko koray.i
Applications Music hello.c koray.o
ClionProjects Pictures hello.sh koray.s
Code Public innbound mssql
Desktop TheElementsFiles innbound-pf nono.txt
Documents VirtualBox VMs innbound_usage.log svn-key
Downloads a.out k.txt tugay.c
IdeaProjects asm.asm klinnck webtoolkit
Koray.class asm.hack klinnck-pf
Koray.java cexamples koray.a
Library fifa.sql koray.c
На данный момент мне нужно будет ударить Enter так, что я вернусь, чтобы колотить приглашение. Зачем?
Спасибо, дожидаясь, что процесс ребенка дал мне понять. –
@KorayTugay добро пожаловать. :-) –