dcrowley_01
asked on
C function: mktemp() is not working under linux
I have a c program that used the mktmp function. It is no longer working since we shifted from HPUX to a Linux environment. I googled and found out that I shouldn't be using mktmp() anymore:
http://man7.org/linux/man-pages/man3/mktemp.3.html
Here is the code, written a long time ago by someone else and my C programming is not sharp (small pun intended):
/* try to create temporary file to hold per-dept recap lines */
strcpy(recapfilename, "/tmp/tstaff-recap-XXXXXX" );
mktemp(recapfilename);
#ifdef JCCDEBUG
fprintf(stderr, "%%recap file name is '%s'\n", recapfilename);
#endif /* JCCDEBUG */
recapfp = fopen(recapfilename, "w+");
if (recapfp == NULL)
{
fprintf(stderr, "%%unable to open recap file '%s'\n", recapfilename);
}
#ifdef JCCDEBUG
else
{
fprintf(stderr, "%%recap file '%s' opened OK\n", recapfilename);
}
#endif /* JCCDEBUG */
Can someone give me the new function to use? When I run the program I get the 'unable to open recap file. So I am sure that is where it is failing when trying to use the mktmp() function.
Thanks in advance!
http://man7.org/linux/man-pages/man3/mktemp.3.html
Here is the code, written a long time ago by someone else and my C programming is not sharp (small pun intended):
/* try to create temporary file to hold per-dept recap lines */
strcpy(recapfilename, "/tmp/tstaff-recap-XXXXXX"
mktemp(recapfilename);
#ifdef JCCDEBUG
fprintf(stderr, "%%recap file name is '%s'\n", recapfilename);
#endif /* JCCDEBUG */
recapfp = fopen(recapfilename, "w+");
if (recapfp == NULL)
{
fprintf(stderr, "%%unable to open recap file '%s'\n", recapfilename);
}
#ifdef JCCDEBUG
else
{
fprintf(stderr, "%%recap file '%s' opened OK\n", recapfilename);
}
#endif /* JCCDEBUG */
Can someone give me the new function to use? When I run the program I get the 'unable to open recap file. So I am sure that is where it is failing when trying to use the mktmp() function.
Thanks in advance!
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Can you copy and paste the error? And mktemp() according to the man pages is a security risk.
ASKER
The error is: %unable to open recap file ''
see if mkstemp() is returning NULL
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
This is not a code problem. Something else is going on with the OS. Going to close the question and split the points.
ASKER
unable to open recap file
So it appears the code is ok, but their must be some difference between the environments.
Has anyone ever run into this before?
Can I re-write it so that it doesn't need to write the temp information out to a file and instead holds it in memory or something?