linux c excel函数返回值,linux c 使用dup2函数将输出重定向到文件 --execl

一个实际应用的例子:char std_file[PATH_MAX + 1];

FILE

*std_fp;

if((std_fp = fopen("/home/hy/out.std","w+")) == NULL){

do_log(".....\n");exit(6);

}

if(dup2(fileno(std_fp),STDOUT_FILENO) ==

-1){

do_log(".....\n");

fclose(std_fp);

exit(5);

}

if(dup2(fileno(std_fp),STDERR_FILENO) ==

-1){

do_log(".....\n");fclose(std_fp);

exit(5);

}

fclose(std_fp);

execl( EXE_PATH, EXE_NAME, ..... NULL ); //启动命令,省略

在我的实际应用中,因为fork了一个子进程,所以要考虑输出的信息怎样保存到文件中,所以使用了这个。

函数的其他东西可以参考以下资料

----------------------------------------------------------------------------------

#include

int dup( int filedes );

int dup2( int filedes, int filedes2 ); //新文件描述符复制filedes,并且将filedes2值作为新文件描述符的值//dup函数的作用:复制一个现有的句柄,产生一个与“源句柄特性”完全一样的新句柄//

(也即生成一个新的句柄号,并关联到同一个设备,而且它返回的一定是当前可用的//

文件描述符中的最小数值)//dup2函数的作用:复制一个现有的句柄到另一个句柄上,目标句柄的特性与“源句柄特性”

//

完全一样(也即首先关闭目标句柄,与设备断连,接着从源句柄完全拷贝复制到目标句柄)//

这些函数返回的新文件描述符与参数filedes2共享同一个文件表项。

//dup和dup2都是系统服务,window平台对应DuplicateHandle函数

#include

#include

#include

void main( void )

{

int old;

FILE

*new;

old = _dup( 1

);

if( old == -1

)

{

perror( "_dup( 1 ) failure" );

exit( 1 );

}

write( old, "This

goes to stdout first\r\n", 27 );

if( ( new = fopen(

"data", "w" ) ) == NULL )

{

puts( "Can't open file 'data'\n" );

exit( 1 );

}

if( -1 == _dup2(

_fileno( new ), 1 ) )

{

perror( "Can't _dup2 stdout" );

exit( 1 );

}

puts( "This goes to

file 'data'\r\n" );

fflush( stdout

);

fclose( new

);

_dup2( old, 1

);

puts( "This goes to

stdout\n" );

puts( "The file

'data' contains:" );

system( "type data"

);

------------------------------------------------------------------------------------------------------------------------------------

你可能感兴趣的:(linux,c,excel函数返回值)