HI,all: I wrote a file like this: test.c #include <stdio.h> #include <stdlib.h> #include<locale.h> int main() { FILE *fpipe; char *command="cd /data/cdc/document/;/usr/bin/svn status 73/2788 --config-dir /home/svnroot/.subversion 2>&1"; char line[256];
if ( !(fpipe = (FILE*)popen(command,"r")) ) { // If fpipe is NULL perror("Problems with pipe"); exit(1); } while ( fgets( line, sizeof line, fpipe)) { //printf("%s", line); puts(line); } pclose(fpipe); } and I compiled it, run on the OpenSUSE gcc -o test test.c ./test This way works fine, There is no errors output, but when I use crontab to run it, * * * * * /root/test >> /var/log/test.log 2>&1 The error comes out: tailf -f /var/log/test.log svn: Error converting entry in directory '73/2788' to UTF-8 svn: Can't convert string from native encoding to 'UTF-8': svn: ?\228?\189?\160?\229?\165?\189.txt The directory contains a file using chinese character,I have searched online,most articles said using " export LC_ALL='en_US.utf-8' " to solve this problem,I try to add this code to the file #include <stdio.h> #include <stdlib.h> #include<locale.h> int main() { FILE *fpipe; char *command="cd /data/cdc/document/;/usr/bin/svn status 73/2788 --config-dir /home/svnroot/.subversion 2>&1"; char line[256]; char *b = setlocale(LC_ALL, "en_US.utf-8"); puts(b); b = setlocale(LC_ALL, NULL); puts(b); if ( !(fpipe = (FILE*)popen(command,"r")) ) { // If fpipe is NULL perror("Problems with pipe"); exit(1); } while ( fgets( line, sizeof line, fpipe)) { //printf("%s", line); puts(line); } pclose(fpipe); } I compile it again, run by the crontab, but it does not work, the error still exists. How can I solve this problem?