Я пытаюсь выполнить printf(">>");
только один раз в родительском процессе. Это означает, что как только я вызываю fork () и создается дочерний процесс, программа (после того, как она снова начинает выполнять код сверху), должна пропустить printf(">>");
Примечание: я пытаюсь реализовать что-то очень аналогично оболочке Python. Обратите внимание, когда вы вводите print("example")
в Python Shell, он печатает «example», а не «>>> example»
Прошу прощения за низкую читаемость, я действительно старался изо всех сил.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
int main(){
char * selected = malloc(256);
char line[255];
pid_t pid = getpid();
while (1){
printf("(In parent) PID: %d, PPID: %d\n", getpid(), getppid());
// if (ps is parent && line is NOT executed later on by fork){
printf(">>");
//}
fgets(line, sizeof(line), stdin);
line[strlen(line) - 1] = '\0'; // removes \n
if (strcmp(line, "fork") == 0){
pid = fork();
if (pid == 0){
printf("(In child) PID: %d, PPID: %d\n", getpid(), getppid());
}
}
}
return 0;
}