Как убить / остановить запущенный процесс в терминале без потери вывода? - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь запустить простой код C ++ в терминале и пытаюсь сохранить его вывод в output.txt.

CODE-

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(1)
    {
        cin>>n;
        cout<<n;
    }
    return 0;
}

с помощью команд терминала:

g++ code.cpp
./a.out > output.txt

и input:

1 
2
3
4
5

, но когда я завершаю программу нажатием Ctrl + C, output.txt пуст. Заранее спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 28 мая 2020

у меня даже работает так, как вы ожидаете. Думаю может твоя задача не закрыта! так что попробуйте две вещи: 1- попробуйте закрыть терминал после crtl + C. после еще раз проверьте содержимое выходного файла 2 - укажите хорошее имя вместо a.out (testfile.out) и после crtl + c попробуйте команду ниже в оболочке:

sudo ps -aux | grep testfile

, чтобы убедиться, что ваш процесс либо был убит, либо нет

0 голосов
/ 28 мая 2020

Я просто проверяю, я завершил программу, нажав Ctrl + C, результат отлично сохраняется в файле output.txt.

Но все же, если вы не уверены в проблеме, вы можете использовать метод ниже:

#include<bits/stdc++.h>
using namespace std;

int main(){
    int n;
    while(n!=-1){
        cin>>n;
        if(n!=-1)
            cout<<n<<endl;
    }
    return 0;
}

Введите -1, чтобы завершить программу. :)

...