当前位置: 技术问答>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;
}
怎么出现段错误啊?????
/*
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;
}
#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目录存在,不然也会报错!
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.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。