标准输出 linux(Linux怎么学)
大家好,今天小编来为大家解答以下的问题,关于标准输出 linux,Linux怎么学这个很多人还不知道,现在让我们一起来看看吧!
linux nohup命令
linux系统下nohup命令是什么呢?下面是具体介绍:
1、nohup命令简介:nohup命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup命令运行后台中的程序。要运行后台中的 nohup命令,添加(表示”and”的符号)到命令的尾部。
无论是否将 nohup命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out文件中。如果当前目录的 nohup.out文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么 Command参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
2、nohup命令功能:
不挂断地运行命令。
3、语法:
nohup Command [ Arg… ] [ ]
退出状态:该命令返回下列出口值:
126可以查找但不能调用 Command参数指定的命令。
127 nohup命令发生错误或不能查找由 Command参数指定的命令。
否则,nohup命令的退出状态是 Command参数指定命令的退出状态。
4、nohup命令及其输出文件:
nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。
该命令的一般形式为:nohup command
5、使用nohup命令提交作业:
如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:
nohup command myout.file 21
在上面的例子中,输出被重定向到myout.file文件中。
使用 jobs查看任务。
使用 fg%n关闭。
另外有两个常用的ftp工具ncftpget和ncftpput,可以实现后台的ftp上传和下载,这样就可以利用这些命令在后台上传和下载文件了。
###################错误提示############
nohup应对的就是突然断网或者关闭终端时屏蔽发送给后台任务的 SIGHUP信号进而使任务不中断继续运行。
exit或者 logout命令正常退出的话根本用不着 nohup,你的运行的命令都不会被中断。不信你可以 command后 exit,再次登录,ps查看一下命令肯定还在后台跑。
简单来说,如果你使用的是 exit或者 logout命令正常登出,系统只会向前台任务发送 SIGHUP信号,到后台的任务时不会收到 SIGHUP信号的。如果你强行关闭的窗口或者断网了,系统会向你的前后台任务都发送 SIGHUP信号,此时如果使用了 nohup去运行任务,nohup会屏蔽 SIGHUP信号,任务也就不会被中断了。
6、nohup命令的用法:
nohup/root/start.sh
在shell中回车后提示:
[~]$ appending output to nohup.out
原程序的的标准输出被自动改向到当前目录下的nohup.out文件,起到了log的作用。
当shell中提示了nohup成功后还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端。
linux 怎么把标准输出重定向其他文件
command> filename把把标准输出重定向到一个新文件中
command>> filename把把标准输出重定向到一个文件中(追加)
command 1> fielname把把标准输出重定向到一个文件中
command> filename 2>&1把把标准输出和标准错误一起重定向到一个文件中
command 2> filename把把标准错误重定向到一个文件中
command 2>> filename把把标准输出重定向到一个文件中(追加)
command>> filename 2>&1把把标准输出和标准错误一起重定向到一个文件中(追加)
command< filename> filename2把command命令以filename文件作为标准输入,以filename2文件作为标准输出
command< filename把command命令以filename文件作为标准输入
command<< delimiter把从标准输入中读入,直至遇到delimiter分界符
command<&m把把文件描述符m作为标准输入
command>&m把把标准输出重定向到文件描述符m中
command<&-把关闭标准输入
请教C++程序如何捕获linux shell的输出
调用系统函数popen,利用管道实现输出的传送即可。
popen()函数通过创建一个管道,调用 fork产生一个子进程,执行一个 shell以运行命令来开启一个进程。这个进程必须由 pclose()函数关闭,而不是 fclose()函数。pclose()函数关闭标准 I/O流,等待命令执行结束,然后返回 shell的终止状态。如果 shell不能被执行,则 pclose()返回的终止状态与 shell已执行 exit一样。
type参数只能是读或者写中的一种,得到的返回值(标准 I/O流)也具有和 type相应的只读或只写类型。如果 type是"r"则文件指针连接到 command的标准输出;如果 type是"w"则文件指针连接到 command的标准输入。
command参数是一个指向以 NULL结束的 shell命令字符串的指针。这行命令将被传到 bin/sh并使用-c标志,shell将执行这个命令。
popen的返回值是个标准 I/O流,必须由pclose来终止。前面提到这个流是单向的。所以向这个流写内容相当于写入该命令的标准输入;命令的标准输出和调用popen的进程相同。与之相反的,从流中读数据相当于读取命令的标准输出;命令的标准输入和调用popen的进程相同。
例程如下:
#include<cstdio>
#include<unistd.h>
#include<cstring>
#include<cstdlib>
intmain()
{
FILE*read_fp;
charbuffer[BUFSIZ+1];
intchars_read;
memset(buffer,'\0',sizeof(buffer));
read_fp=popen("uname-a","r");
if(read_fp!=NULL)
{
chars_read=fread(buffer,sizeof(char),BUFSIZ,read_fp);
if(chars_read>0)
{
printf("Outputwas:\n%s\n",buffer);
}
pclose(read_fp);
exit(EXIT_SUCCESS);
}
exit(EXIT_FAILURE);
}
运行结果如下: