私はc言語とLinuxが初めてです。fork()、getpid()、および exec() 関数に関連する問題があります。fork() 呼び出しを使用して ac プログラムを作成しました。私のプログラムのコードは次のコードです。
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
void fun()
{
printf("\n this is trial for child process");
}
int main (int argc, char const *argv[])
{
int i,status,pid,t;
if(pid=fork()<0)
{
printf("\nfailed to create the process\n");
}
if(pid=fork()==0)
{
printf("\n the child process is created");
fun();
exit(1);
}
while(wait(&status)!=pid);
return 0;
}
このプログラムの出力は次のとおりです。
子プロセスが作成されます
これは子プロセスの試行です
子プロセスが作成されます
これは子プロセスの試行です
今、私の質問は次のとおりです。
- プログラムの出力が同じことを 2 回表示するのはなぜですか? 「子プロセスが作成されました。これは子プロセスの試行です」となるはずの出力
- 出力がコードに従っていないのはなぜですか?
- 4 つのプロセスがあり、すべてのプロセスが異なるタスクを実行するプログラムを作成できますか。たとえば、1 つのプロセスが「私の名前」を出力します。1 つのプロセスは "my age" を出力し、もう 1 つのプロセスは "my address ?
- メイン関数で複数のプロセスを作成する方法は?
- 複数のプロセスの実行を制御するには?
- 関数は何をし
exec()
ますか?exec()
の動作をソースコードfork()
で説明してもらえますか?getpid()
この初心者を助けてください。