Обратите внимание, что ваше приглашение (вы назвали его command
) печатается дважды.Это связано с тем, что дочерний процесс застревает в собственной подсказке, ожидая ввода команды.Если вы нажмете Enter один раз, а затем наберете свою команду (например, ls
), а затем еще раз нажмите Enter , тогда ваша программа заработает.
Это легко исправитьэто поставить вызов os.fork()
после приглашения:
import os
while True:
command = os.getcwd() + ">"
x = input(command)
split_string = x.split(" ")
pid = os.fork()
if pid == 0:
os.execvp(split_string[0], split_string)
else:
finish = os.waitpid(0, 0)
print(finish)