Есть маленькая программа:
ядро main.c
#include <stdio.h>
FILE * pFile;
int main()
{
char mystring [100];
write();
// pFile = tmpfile();
// if (pFile == NULL) perror ("Error opening file");
if ( fgets (mystring , 100 , pFile) != NULL )
puts (mystring);
fclose (pFile);
return 0;
}
динамическая библиотека write.c
#include <stdio.h>
FILE * pFile;
int write ()
{
char sentence [256];
printf ("Enter sentence to append: ");
fgets (sentence,256,stdin);
pFile = tmpfile();
fputs (sentence,pFile);
return 0;
}
write.h:
extern FILE * pFile;
Makefile:
main: main.o libwrite.so
gcc -o main main.o -L. -lwrite -Wl,-rpath,.
main.o: main.c
gcc -c main.c
libwrite.so: write.o
gcc -shared -o libwrite.so write.o
write.o: write.c
gcc -c -fPIC write.c
clean:
rm -f *.o *.so main
Надо в функцию write ввести поток в tmpfile(), а в ядре им воспользоваться. В данном случае у меня segfault.