当前位置:  技术问答>linux和unix

mkstem的问题

    来源: 互联网  发布时间:2016-12-19

    本文导语:  /********************************************************************************************/ /* tmpfile和tmpnam的使用。 当关闭该文件时或者程序结束时自动删除文件。 */ /*************************************************************************************...

/********************************************************************************************/
/*
tmpfile和tmpnam的使用。
当关闭该文件时或者程序结束时自动删除文件。
*/

/********************************************************************************************/

#include 
#include 
#include 

int main()
{
char name[L_tmpnam];
char line[100];
int fd;

if ( (fd = mkstemp ("/root/work/12XXXXXX") ) == -1)
{
fprintf(stderr, "mkstemp error!n%sn", strerror(stderr));
}


//close(fd);    
//unlink(fp);  //不知道创建的文件名,所以删不了


return 0;
}

怎么出现段错误啊?????

|
在我的电脑上测试正确。
#include
#include
#include
int main ( int argc, char *argv[] )
{
int fd;
char a[] = "/home/cao/12XXXXXX";

if ( (fd = mkstemp(a)) == -1 ){
printf("Error!n");
}
return EXIT_SUCCESS;
}

|
换个文件路径试试, /root/work/12xxxxx 需要root的权限

|
The last six characters of template must  be  "XXXXXX"  and  these  are
replaced  with  a string that makes the filename unique.  Since it will
be modified, template must not be a  string  constant,  but  should  be
declared as a character array.(man mkstemp得到)
所以你的程序错在mkstemp是一个常量,应该声明为数组 char a[] = "/root/work/12XXXXXX";
这样的话段错误就解决了,但是可能还会有错,那就是1楼说的root权限问题。还有必须保证work目录存在,不然也会报错!

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3