1
に表示されていない私は、次のコードを持っている:子供のprintfは、親プロセスのコンソール
この出力になり#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
// child process is forked.
// the child executes "ls -al"
// the parent process "waits" for the child and collects it
int main(void) {
char *args[3];
pid_t pid;
printf("i am a parrent and my pid=%d\n",getpid());
if ((pid = fork()) < 0)
fprintf(stderr, "fork error");
else if (pid == 0) {
/* child */
printf("i am a child and my pid=%d",getpid());
args[0] = strdup("ls");
args[1] = strdup("-al");
args[2] = NULL;
if (execvp(args[0], args) < 0)
fprintf(stderr, "exec error");
}
printf("my child got pid=%d\n",pid);
/* parent */
if (waitpid(pid, NULL, 0) < 0)
fprintf(stderr, "waitpid error");
exit(0);
}
:
i am a parrent and my pid=11745
my child got pid=11750
total 144
drwxr--r-- 3 student student 4096 Jun 25 21:18 .
drwxrwxr-x 4 student student 4096 May 24 17:18 ..
いくつかの他のファイル...
私の質問: なぜ、子供のprintf ("i am a child...")
出力がコンソールに表示されず、ls
の出力が?親プロセスと同じコンソールに表示するにはどうすればよいですか?
メッセージにキャリッジリターンを追加します。 'printf("私は子供で、自分のpid =%d \ n "、getpid());' – wildplasser
今は動作しますが、なぜそれが "\ n"なくなっていないのですか? –
\ rはキャリッジリターンです\ nは改行です – Shiro