Файлы (ну, в действительности, стандарт C говорит о «единицах компиляции») ничего не делают, не выполняют . Их предполагаемое использование состоит в том, чтобы организовать функции в связанных группах. Функции и программы (которые могут состоять из нескольких связанных модулей компиляции) - вот что делают.
Если вы хотите, чтобы одна функция вызывала другую, просто сделайте это. Конечно, вам нужно будет это правильно объявить. Если он находится в отдельном файле, рекомендуемый способ сделать это - создать «файл заголовка» с объявлением, которое может быть #inclined как в файле, реализующем вызываемую функцию, так и в файле с вызывающей функцией.
Если вместо этого вам нужно несколько потоков выполнения, нет переносимого способа сделать это. Это зависит от платформы. В Windows есть набор возможностей для работы с потоками, сведения о которых Microsoft документирует. Большинство платформ Unix используют API, известный как pthreads .
Наконец, вы можете захотеть общаться с двумя разными программами. Это известно как межпроцессное взаимодействие (IPC). Это тоже зависит от платформы.