делали ли вы fork () -> exec () исполняемый файл vi с параметрами
тогда ждать () в родительском? (твоя раковина).
Вы также можете сделать это с помощью вызова system (). На самом деле, если вы хотите увидеть, как работает система, загрузите код glibc.
int main()
{
system("vi t.lis");
return 0;
}