fputs_unlocked - Linux


fputs_unlocked writes a string to a stream, without the file locking performed by fputs. Use fputs_unlocked for better performance in multithreaded programs.


#include <stdio.h>

int fputs_unlocked(const char *s, FILE *stream);




#include <stdio.h>
#include <pthread.h>

void *thread_func(void *arg)
    FILE *f = (FILE *)arg;
    fputs_unlocked("Hello from a thread!\n", f);
    return NULL;

int main()
    FILE *f = fopen("output.txt", "w");
    pthread_t thread;

    pthread_create(&thread, NULL, thread_func, f);
    fputs_unlocked("Hello from the main thread!\n", f);
    pthread_join(thread, NULL);
    return 0;

Common Issues

  • Buffer overflow: The string passed to fputs_unlocked must fit within the stream’s output buffer. If it doesn’t, undefined behavior may occur.
  • Concurrency errors: fputs_unlocked is not thread-safe. If multiple threads are writing to the same stream concurrently, data corruption can occur.


fputs_unlocked can be combined with other stream manipulation functions, such as fseek, ftell, and fclose, to perform advanced file I/O operations.

Related Commands

  • fputs: File locking version of fputs_unlocked
  • fprintf: Formatted output to a stream
  • fwrite: Write raw data to a stream