2017-10-13 2 views
2

이 C.C -의 printf (" A는") 소리가 나지 않습니다 경고

#include <stdio.h> 

int main(){ 
    printf("\a\n"); 
    printf("Startled by the sudden sound, Sally shouted, \"By the Great Pumpkin, what was that!?\""); 
    return 0; 
} 

기발한에 내 코드, "\ \ n을"이 경고 권리를 소리로되어있다? 그러나 웬일인지, 그렇게하지 않고있다. 나는 Ubuntu Zesty에 있는데, bash 명령 beep은 경고음을 울리지 만, echo -e '\a'은 그렇지 않으므로 문제가 정확히 무엇인지 확실하지 않습니다.

다른 질문이 나에게 충분히 자세하고 이해할 수있는 답변을 작성하지 못했거나 완전히 다른 해결책이 제게 적용되지 않았기 때문에이 질문을했습니다.

위의 링크 된 게시물은 솔직히 대답이 너무 모호했습니다. "문제는 C와는 다른 것입니다." 전혀 도움이 안돼.

UPDATE : 내가 그놈을 가지고 있고, WM 결과로 그놈 쉘입니다 :이 위에 다른 사람 비틀 거림은, 여기에 문제가 있었다 그냥 넣다. 그때 이후로 나는 소리 설정을 열고, 경고로 이동하고, 활성화하고, 볼륨을 높여야했습니다. 셸 자체가 문제가 될 수 있다는 사실은 내 관심을 끌지 못했습니다. metacity --replace을 실행하고 갑자기 경고를들을 수있게되면서 이것을 실현했습니다.

+0

아마도 쉘 옵션입니다. – Stargateur

+3

경고를 울리기 위해'BEL' 문자를 해석하는 것은 터미널 에뮬레이터의 일입니다. 설정을보고 가청 벨이 비활성화되어 있는지 확인하십시오. 단말기는 바탕 화면을 사용하여 경고음을 울리므로 바탕 화면의 소리 설정을보고 소리가 켜져 있는지 확인해야합니다. – user4815162342

+0

@ user4815162342 아마도 같은 터미널에서 실행중인'beep' 명령이 성공하면 터미널 자체를 가리키고 데스크탑은 가리 키지 않습니다. – unwind

답변

4

실제로 올바르게 작성했습니다 : 그리고 \n은 경고음 출력을 지연시키지 않는 관용적 인 방법입니다.

그러나 근년의 운영 체제에서는 사용자가 환경을 구성하여 이러한 경고음을 억제 할 수 있습니다. 그게 아마 여기에서 일어난 일일 것입니다. 여러분의 질문에 조금 더 자세히 들여다 보면 쉘이 표준 출력에서 ​​경고음을 울리지 않는 것 같습니다.

+1

* 추가 ​​된'\ n'은 경고음 출력을 지연시키지 않는 관용적 인 방법입니다. * 이것은 stdout을 버퍼링하는 C로 구현 된 경우에만 관용적입니다. 'FILE' 버퍼링은 구현에 따라 정의됩니다. –

+1

... 그리고'fflush (stdout)'는 더 나은 IMO입니다. 왜냐하면 추가 된'\ n'은 반드시 원하지 않는 부작용을 가지고 있기 때문입니다. –

+0

그건 의미가 있습니다. 나는 그러한 경고를 억압하지 않는 방법을 찾으려했지만, 나는 그것이 아래로 여행하기위한 복잡한 길일 것이라고 생각한다. 감사! – txtman

관련 문제